package models

type VpcRequest struct {
	VpcName   string            `json:"vpcName"`
	CidrBlock string            `json:"cidrBlock"`
	Tags      map[string]string `json:"tags"`
}

type VpcResponse struct {
	VpcName         string   `json:"VpcName,omitnil" name:"VpcName"`
	VpcId           string   `json:"VpcId,omitnil" name:"VpcId"`
	CidrBlock       string   `json:"CidrBlock,omitnil" name:"CidrBlock"`
	IsDefault       bool     `json:"IsDefault,omitnil" name:"IsDefault"`
	EnableMulticast bool     `json:"EnableMulticast,omitnil" name:"EnableMulticast"`
	CreatedTime     string   `json:"CreatedTime,omitnil" name:"CreatedTime"`
	DnsServerSet    []string `json:"DnsServerSet,omitnil" name:"DnsServerSet"`
	DomainName      string   `json:"DomainName,omitnil" name:"DomainName"`
}

type SubnetRequest struct {
	VpcId      string            `json:"vpcId,omitnil" name:"VpcId"`
	SubnetName string            `json:"subnetName" name:"subnetName"`
	Zone       string            `json:"zone" name:"zone"`
	CidrBlock  string            `json:"cidrBlock" name:"cidrBlock"`
	Tags       map[string]string `json:"tags" name:"tags"`
}

type SubnetResponse struct {
	VpcId                   string `json:"VpcId,omitnil" name:"VpcId"`
	SubnetId                string `json:"SubnetId,omitnil" name:"SubnetId"`
	SubnetName              string `json:"SubnetName,omitnil" name:"SubnetName"`
	CidrBlock               string `json:"CidrBlock,omitnil" name:"CidrBlock"`
	IsDefault               bool   `json:"IsDefault,omitnil" name:"IsDefault"`
	Zone                    string `json:"Zone,omitnil" name:"Zone"`
	RouteTableId            string `json:"RouteTableId,omitnil" name:"RouteTableId"`
	CreatedTime             string `json:"CreatedTime,omitnil" name:"CreatedTime"`
	AvailableIpAddressCount uint64 `json:"AvailableIpAddressCount,omitnil" name:"AvailableIpAddressCount"`
	NetworkAclId            string `json:"NetworkAclId,omitnil" name:"NetworkAclId"`
	IsRemoteVpcSnat         bool   `json:"IsRemoteVpcSnat,omitnil" name:"IsRemoteVpcSnat"`
	TotalIpAddressCount     uint64 `json:"TotalIpAddressCount,omitnil" name:"TotalIpAddressCount"`
}

type SubnetResourceResponse struct {
	ResourceType  string `json:"resourceType,omitnil" name:"resourceType"`
	ResourceName  string `json:"resourceName,omitnil" name:"resourceName"`
	ResourceCount uint64 `json:"resourceCount,omitnil" name:"resourceCount"`
}

type RouteTableRequest struct {
	VpcId          string            `json:"vpcId"`
	RouteTableName string            `json:"routeTableName"`
	Tags           map[string]string `json:"tags"`
}

type RouteTableResponse struct {
	VpcId          string        `json:"VpcId,omitnil" name:"VpcId"`
	RouteTableId   string        `json:"RouteTableId,omitnil" name:"RouteTableId"`
	RouteTableName string        `json:"RouteTableName,omitnil" name:"RouteTableName"`
	SubnetIds      []string      `json:"SubnetIds"`
	RoutePolicy    []RoutePolicy `json:"RoutePolicy,omitnil" name:"RoutePolicy"`
	Main           bool          `json:"Main,omitnil" name:"Main"`
	CreatedTime    string        `json:"CreatedTime,omitnil" name:"CreatedTime"`
}

type RoutePolicy struct {
	DestinationCidrBlock string `json:"DestinationCidrBlock,omitnil" name:"DestinationCidrBlock"` // 目的网段，取值不能在私有网络网段内，例如：112.20.51.0/24。
	// 下一跳类型，支持的类型有：
	// CVM：公网网关类型的云服务器；
	// VPN：VPN网关；
	// DIRECTCONNECT：专线网关；
	// PEERCONNECTION：对等连接；
	// HAVIP：高可用虚拟IP；
	// NAT：NAT网关;
	// NORMAL_CVM：普通云服务器；
	// EIP：云服务器的公网IP；
	// LOCAL_GATEWAY：本地网关。
	GatewayType string `json:"GatewayType,omitnil" name:"GatewayType"`
	// 下一跳地址，这里只需要指定不同下一跳类型的网关ID，系统会自动匹配到下一跳地址。
	// 特殊说明：GatewayType为NORMAL_CVM时，GatewayId填写实例的内网IP。
	GatewayId string `json:"GatewayId,omitnil" name:"GatewayId"`

	// 路由策略ID。IPv4路由策略ID是有意义的值，IPv6路由策略是无意义的值0。后续建议完全使用字符串唯一ID `RouteItemId`操作路由策略。
	// 该字段在删除时必填，其他字段无需填写。
	RouteId uint64 `json:"RouteId,omitnil" name:"RouteId"`

	// 路由策略描述。
	RouteDescription string `json:"RouteDescription,omitnil" name:"RouteDescription"`

	// 是否启用
	Enabled bool `json:"Enabled,omitnil" name:"Enabled"`

	// 路由类型，目前我们支持的类型有：
	// USER：用户路由；
	// NETD：网络探测路由，创建网络探测实例时，系统默认下发，不可编辑与删除；
	// CCN：云联网路由，系统默认下发，不可编辑与删除。
	// 用户只能添加和操作 USER 类型的路由。
	RouteType string `json:"RouteType,omitnil" name:"RouteType"`

	// 路由表实例ID，例如：rtb-azd4dt1c。
	RouteTableId string `json:"RouteTableId,omitnil" name:"RouteTableId"`

	// 目的IPv6网段，取值不能在私有网络网段内，例如：2402:4e00:1000:810b::/64。
	DestinationIpv6CidrBlock string `json:"DestinationIpv6CidrBlock,omitnil" name:"DestinationIpv6CidrBlock"`

	// 路由唯一策略ID。
	RouteItemId string `json:"RouteItemId,omitnil" name:"RouteItemId"`

	// 路由策略是否发布到云联网。
	// 注意：此字段可能返回 null，表示取不到有效值。
	PublishedToVbc bool `json:"PublishedToVbc,omitnil" name:"PublishedToVbc"`

	// 路由策略创建时间
	CreatedTime string `json:"CreatedTime,omitnil" name:"CreatedTime"`
}

type EIPResponse struct {
	AddressId               string `json:"AddressId,omitnil" name:"AddressId"`                             // `EIP`的`ID`，是`EIP`的唯一标识。
	AddressName             string `json:"AddressName,omitnil" name:"AddressName"`                         // `EIP`名称。
	AddressStatus           string `json:"AddressStatus,omitnil" name:"AddressStatus"`                     // `EIP`状态，包含'CREATING'(创建中),'BINDING'(绑定中),'BIND'(已绑定),'UNBINDING'(解绑中),'UNBIND'(已解绑),'OFFLINING'(释放中),'BIND_ENI'(绑定悬空弹性网卡)
	AddressIp               string `json:"AddressIp,omitnil" name:"AddressIp"`                             // 外网IP地址
	InstanceId              string `json:"InstanceId,omitnil" name:"InstanceId"`                           // 绑定的资源实例`ID`。可能是一个`CVM`，`NAT`。
	CreatedTime             string `json:"CreatedTime,omitnil" name:"CreatedTime"`                         // 创建时间。按照`ISO8601`标准表示，并且使用`UTC`时间。格式为：`YYYY-MM-DDThh:mm:ssZ`。
	NetworkInterfaceId      string `json:"NetworkInterfaceId,omitnil" name:"NetworkInterfaceId"`           // 绑定的弹性网卡ID
	PrivateAddressIp        string `json:"PrivateAddressIp,omitnil" name:"PrivateAddressIp"`               // 绑定的资源内网ip
	IsArrears               bool   `json:"IsArrears,omitnil" name:"IsArrears"`                             // 资源隔离状态。true表示eip处于隔离状态，false表示资源处于未隔离状态
	IsBlocked               bool   `json:"IsBlocked,omitnil" name:"IsBlocked"`                             // 资源封堵状态。true表示eip处于封堵状态，false表示eip处于未封堵状态
	IsEipDirectConnection   bool   `json:"IsEipDirectConnection,omitnil" name:"IsEipDirectConnection"`     // eip是否支持直通模式。true表示eip支持直通模式，false表示资源不支持直通模式
	AddressType             string `json:"AddressType,omitnil" name:"AddressType"`                         // EIP 资源类型，包括CalcIP、WanIP、EIP和AnycastEIP、高防EIP。其中：`CalcIP` 表示设备 IP，`WanIP` 表示普通公网 IP，`EIP` 表示弹性公网 IP，`AnycastEip` 表示加速 EIP，`AntiDDoSEIP`表示高防EIP。
	CascadeRelease          bool   `json:"CascadeRelease,omitnil" name:"CascadeRelease"`                   // eip是否在解绑后自动释放。true表示eip将会在解绑后自动释放，false表示eip在解绑后不会自动释放
	InternetServiceProvider string `json:"InternetServiceProvider,omitnil" name:"InternetServiceProvider"` // 弹性公网IP的运营商信息，当前可能返回值包括"CMCC","CTCC","CUCC","BGP"
	LocalBgp                bool   `json:"LocalBgp,omitnil" name:"LocalBgp"`                               // 是否本地带宽EIP  	// 注意：此字段可能返回 null，表示取不到有效值。
	Bandwidth               string `json:"Bandwidth,omitnil" name:"Bandwidth"`                             // 弹性公网IP的带宽值。注意，传统账户类型账户的弹性公网IP没有带宽属性，值为空。
	// 弹性公网IP的网络计费模式。
	//  BANDWIDTH_PREPAID_BY_MONTH  表示包月带宽预付费
	// TRAFFIC_POSTPAID_BY_HOUR 表示按小时流量后付费
	// BANDWIDTH_POSTPAID_BY_HOUR  表示按小时带宽后付费
	// BANDWIDTH_PACKAGE  表示共享带宽包
	InternetChargeType string `json:"InternetChargeType,omitnil" name:"InternetChargeType"`
	DeadlineDate       string `json:"DeadlineDate,omitnil" name:"DeadlineDate"`           // 注意：此字段可能返回 null，表示取不到有效值。
	InstanceType       string `json:"InstanceType,omitnil" name:"InstanceType"`           // EIP绑定的实例类型。 注意：此字段可能返回 null，表示取不到有效值。
	Egress             string `json:"Egress,omitnil" name:"Egress"`                       // 静态单线IP网络出口 注意：此字段可能返回 null，表示取不到有效值。
	AntiDDoSPackageId  string `json:"AntiDDoSPackageId,omitnil" name:"AntiDDoSPackageId"` // 高防包ID,当EIP类型为高防EIP时，返回EIP绑定的高防包ID.
}

type EIPRequest struct {
	AddressCount            int64  `json:"addressCount"`            // 实例数量
	InternetMaxBandwidthOut int64  `json:"internetMaxBandwidthOut"` // EIP出带宽上限，单位：Mbps。 1~200M之间
	Period                  int64  `json:"period"`                  // 购买时长, 单位月
	AddressName             string `json:"addressName"`             // EIP实例名称
}

type NATResponse struct {
	NatGatewayId            string              `json:"NatGatewayId,omitnil" name:"NatGatewayId"`
	NatGatewayName          string              `json:"NatGatewayName,omitnil" name:"NatGatewayName"`                   // NAT网关的名称。
	CreatedTime             string              `json:"CreatedTime,omitnil" name:"CreatedTime"`                         // NAT网关创建的时间。
	State                   string              `json:"State,omitnil" name:"State"`                                     // NAT网关的状态。 'PENDING'：生产中，'DELETING'：删除中，'AVAILABLE'：运行中，'UPDATING'：升级中， ‘FAILED’：失败。
	InternetMaxBandwidthOut uint64              `json:"InternetMaxBandwidthOut,omitnil" name:"InternetMaxBandwidthOut"` // 网关最大外网出带宽(单位:Mbps)。
	MaxConcurrentConnection uint64              `json:"MaxConcurrentConnection,omitnil" name:"MaxConcurrentConnection"` // 网关并发连接上限。
	PublicIpAddressSet      []NatGatewayAddress `json:"PublicIpAddressSet,omitnil" name:"PublicIpAddressSet"`           // 绑定NAT网关的公网IP对象数组。
	NetworkState            string              `json:"NetworkState,omitnil" name:"NetworkState"`                       // NAT网关网络状态。“AVAILABLE”:运行中, “UNAVAILABLE”:不可用, “INSUFFICIENT”:欠费停服。
	VpcId                   string              `json:"VpcId,omitnil" name:"VpcId"`                                     // VPC实例ID。
	Zone                    string              `json:"Zone,omitnil" name:"Zone"`                                       // NAT网关所在的可用区。
	SubnetId                string              `json:"SubnetId,omitnil" name:"SubnetId"`
	SecurityGroupSet        []string            `json:"SecurityGroupSet,omitnil" name:"SecurityGroupSet"` // NAT网关绑定的安全组列表 此字段可能返回 null，表示取不到有效值。
}

type NatGatewayAddress struct {
	AddressId       string `json:"AddressId,omitnil" name:"AddressId"`             // 弹性公网IP（EIP）的唯一 ID，形如：`eip-11112222`。
	PublicIpAddress string `json:"PublicIpAddress,omitnil" name:"PublicIpAddress"` // 外网IP地址，形如：`123.121.34.33`。
	IsBlocked       bool   `json:"IsBlocked,omitnil" name:"IsBlocked"`             // 资源封堵状态。true表示弹性ip处于封堵状态，false表示弹性ip处于未封堵状态。
	BlockType       string `json:"BlockType,omitnil" name:"BlockType"`             // 资源封堵类型。NORMAL表示未封禁，SECURITY表示安全封禁，USER表示用户封禁，OTHER表示其他封禁，多个原因封禁时用&连接，比如：SECURITY&USER&OTHER。
}

type NATRequest struct {
	NatGatewayName                string   `json:"natGatewayName"`
	VpcId                         string   `json:"vpcId"`
	InternetMaxBandwidthOut       uint64   `json:"internetMaxBandwidthOut"`       // NAT网关最大外网出带宽(单位:Mbps)，支持的参数值：20, 50, 100, 200, 500, 1000, 2000, 5000，默认: 100Mbps
	MaxConcurrentConnection       uint64   `json:"maxConcurrentConnection"`       // NAT网关并发连接上限，支持参数值：1000000、3000000、10000000，默认值为100000。
	AddressCount                  uint64   `json:"addressCount"`                  // 需要申请的弹性IP个数，系统会按您的要求生产N个弹性IP，其中AddressCount和PublicAddresses至少传递一个。
	PublicIpAddresses             []string `json:"publicIpAddresses"`             // 绑定NAT网关的弹性IP数组，其中AddressCount和PublicAddresses至少传递一个。
	PublicIpAddressesBandwidthOut uint64   `json:"publicIpAddressesBandwidthOut"` // 需要申请公网IP带宽大小（单位Mbps），默认为当前用户类型所能使用的最大值。
}

// IpPortTranslationNATRule IP端口转发规则
type IpPortTranslationNATRule struct {
	IpProtocol       string `json:"ipProtocol"`       // 协议, TCP/UDP
	PublicIpAddress  string `json:"publicIpAddress"`  // nat的公网IP地址
	PublicPort       uint64 `json:"publicPort"`       // nat的公网暴露端口
	PrivateIpAddress string `json:"privateIpAddress"` // 私有IP地址
	PrivatePort      uint64 `json:"privatePort"`      // 私有端口
	Description      string `json:"description"`      // 描述
}

// GatewaySourceIpTranslationNatRule SNAT规则
type GatewaySourceIpTranslationNatRule struct {
	NatGatewaySnatId  string   `json:"natGatewaySnatId"`    // snat的id , 查询时用
	ResourceId        string   `json:"resourceId"`          // subnet子网的id
	PrivateIpAddress  string   `json:"privateIpAddress"`    // 私有IP地址网段
	PublicIpAddresses []string `json:"public_ip_addresses"` // 公网IP地址
	Description       string   `json:"description"`         // 描述
	VpcId             string   `json:"vpcId"`               // vpc的id号
}

type VpnRequest struct {
	VpcId                   string            `json:"vpcId"`
	VpnGatewayName          string            `json:"vpnGatewayName"`
	InternetMaxBandwidthOut uint64            `json:"internetMaxBandwidthOut"`
	InstanceChargeType      string            `json:"instanceChargeType"` // VPN网关计费模式，PREPAID：表示预付费，即包年包月，POSTPAID_BY_HOUR：表示后付费，即按量计费。默认：POSTPAID_BY_HOUR，如果指定预付费模式，参数InstanceChargePrepaid必填。
	Period                  uint64            `json:"period"`
	Zone                    string            `json:"zone"`
	MaxConnection           uint64            `json:"maxConnection"`
	Tags                    map[string]string `json:"tags"`
}

type VpnResponse struct {
	VpnGatewayId            string `json:"vpnGatewayId,omitnil" name:"VpnGatewayId"`
	VpcId                   string `json:"vpcId,omitnil" name:"VpcId"`
	VpnGatewayName          string `json:"vpnGatewayName,omitnil" name:"VpnGatewayName"`
	Type                    string `json:"Type,omitnil" name:"type"`
	State                   string `json:"State,omitnil" name:"State"`                                     // 网关实例状态， 'PENDING'：生产中，'PENDING_ERROR'：生产失败，'DELETING'：删除中，'DELETING_ERROR'：删除失败，'AVAILABLE'：运行中。
	PublicIpAddress         string `json:"PublicIpAddress,omitnil" name:"PublicIpAddress"`                 // 网关公网IP。
	RenewFlag               string `json:"RenewFlag,omitnil" name:"RenewFlag"`                             // 网关续费类型：'NOTIFY_AND_MANUAL_RENEW'：手动续费，'NOTIFY_AND_AUTO_RENEW'：自动续费，'NOT_NOTIFY_AND_NOT_RENEW'：到期不续费。
	InstanceChargeType      string `json:"InstanceChargeType,omitnil" name:"InstanceChargeType"`           // 网关付费类型：POSTPAID_BY_HOUR：按量计费，PREPAID：包年包月预付费。
	InternetMaxBandwidthOut uint64 `json:"InternetMaxBandwidthOut,omitnil" name:"InternetMaxBandwidthOut"` // 网关出带宽。
	CreatedTime             string `json:"CreatedTime,omitnil" name:"CreatedTime"`                         // 创建时间。
	ExpiredTime             string `json:"ExpiredTime,omitnil" name:"ExpiredTime"`                         // 预付费网关过期时间。
	IsAddressBlocked        bool   `json:"IsAddressBlocked,omitnil" name:"IsAddressBlocked"`               // 公网IP是否被封堵。
	NewPurchasePlan         string `json:"NewPurchasePlan,omitnil" name:"NewPurchasePlan"`                 // 计费模式变更，PREPAID_TO_POSTPAID：包年包月预付费到期转按小时后付费。
	RestrictState           string `json:"RestrictState,omitnil" name:"RestrictState"`                     // 网关计费状态，PROTECTIVELY_ISOLATED：被安全隔离的实例，NORMAL：正常。
	Zone                    string `json:"Zone,omitnil" name:"Zone"`                                       // 可用区，如：ap-shanghai-1
	Version                 string `json:"Version,omitnil" name:"Version"`                                 // 网关实例版本信息。
	NetworkInstanceId       string `json:"NetworkInstanceId,omitnil" name:"NetworkInstanceId"`             // Type值为CCN时，该值表示云联网实例ID。
	MaxConnection           uint64 `json:"MaxConnection,omitnil" name:"MaxConnection"`                     // SSL-VPN 客户端连接数。
}

type VpnPrice struct {
	InstancePrice  ItemPrice `json:"InstancePrice,omitnil" name:"InstancePrice"`   // 实例价格
	BandwidthPrice ItemPrice `json:"BandwidthPrice,omitnil" name:"BandwidthPrice"` // 带宽价格
}

type VpnConnectionRequest struct {
	VpnGatewayId              string                    `json:"VpnGatewayId,omitnil" name:"VpnGatewayId"`                           // vpn网关id
	CustomerGatewayId         string                    `json:"CustomerGatewayId,omitnil" name:"CustomerGatewayId"`                 // 对端网关ID
	VpnConnectionName         string                    `json:"VpnConnectionName,omitnil" name:"VpnConnectionName"`                 // 通道名称，可任意命名，但不得超过60个字符。
	PreShareKey               string                    `json:"PreShareKey,omitnil" name:"PreShareKey"`                             // 预共享密钥。
	VpcId                     string                    `json:"VpcId,omitnil" name:"VpcId"`                                         // VPC实例ID
	SecurityPolicyDatabases   []SecurityPolicyDatabase  `json:"SecurityPolicyDatabases,omitnil" name:"SecurityPolicyDatabases"`     // SPD策略组，例如：{"10.0.0.5/24":["172.123.10.5/16"]}，10.0.0.5/24是vpc内网段172.123.10.5/16是IDC网段。用户指定VPC内哪些网段可以和您IDC中哪些网段通信。
	IKEOptionsSpecification   IKEOptionsSpecification   `json:"IKEOptionsSpecification,omitnil" name:"IKEOptionsSpecification"`     // IKE配置（Internet Key Exchange，因特网密钥交换），IKE具有一套自我保护机制，用户配置网络安全协议
	IPSECOptionsSpecification IPSECOptionsSpecification `json:"IPSECOptionsSpecification,omitnil" name:"IPSECOptionsSpecification"` // IPSec配置，腾讯云提供IPSec安全会话设置
	EnableHealthCheck         bool                      `json:"EnableHealthCheck,omitnil" name:"EnableHealthCheck"`                 // 是否支持隧道内健康检查，默认为False。
	HealthCheckLocalIp        string                    `json:"HealthCheckLocalIp,omitnil" name:"HealthCheckLocalIp"`               // 健康检查本端地址，默认值为随机在169.254.128.0/17分配一个IP。
	HealthCheckRemoteIp       string                    `json:"HealthCheckRemoteIp,omitnil" name:"HealthCheckRemoteIp"`             // 健康检查对端地址，默认值为随机在169.254.128.0/17分配一个IP。
	RouteType                 string                    `json:"RouteType,omitnil" name:"RouteType"`                                 // 通道类型, 例如:["STATIC", "StaticRoute", "Policy"]
	NegotiationType           string                    `json:"NegotiationType,omitnil" name:"NegotiationType"`                     // 协商类型，默认为active（主动协商）。可选值：active（主动协商），passive（被动协商），flowTrigger（流量协商）
	DpdEnable                 int64                     `json:"DpdEnable,omitnil" name:"DpdEnable"`                                 // DPD探测开关。默认为0，表示关闭DPD探测。可选值：0（关闭），1（开启）
	DpdTimeout                string                    `json:"DpdTimeout,omitnil" name:"DpdTimeout"`                               // DPD超时时间。即探测确认对端不存在需要的时间。dpdEnable为1（开启）时有效。默认30，单位为秒
	DpdAction                 string                    `json:"DpdAction,omitnil" name:"DpdAction"`                                 // DPD超时后的动作。默认为clear。dpdEnable为1（开启）时有效。可取值为clear（断开）和restart（重试）
}

type SecurityPolicyDatabase struct {
	LocalCidrBlock  string   `json:"LocalCidrBlock,omitnil" name:"LocalCidrBlock"`   // 本端网段
	RemoteCidrBlock []string `json:"RemoteCidrBlock,omitnil" name:"RemoteCidrBlock"` // 对端网段
}

type VPNCustomerGateway struct {
	CustomerGatewayId   string `json:"CustomerGatewayId,omitnil" name:"CustomerGatewayId"`     // 用户网关唯一ID
	CustomerGatewayName string `json:"CustomerGatewayName,omitnil" name:"CustomerGatewayName"` // 网关名称
	IpAddress           string `json:"IpAddress,omitnil" name:"IpAddress"`                     // 公网地址
	CreatedTime         string `json:"CreatedTime,omitnil" name:"CreatedTime"`                 // 创建时间
}

type VpcInfo struct {
	VpcId           string `json:"VpcId,omitnil" name:"VpcId"`                     // Vpc Id
	SubnetId        string `json:"SubnetId,omitnil" name:"SubnetId"`               // 子网ID
	IntranetAddress string `json:"IntranetAddress,omitnil" name:"IntranetAddress"` // 内网访问地址 此字段可能返回 null，表示取不到有效值。
}

type CLBRequest struct {
	LoadBalancerType        string `json:"load_balancer_type"` // 负载均衡实例的网络类型：	OPEN：公网属性， INTERNAL：内网属性。
	LoadBalancerName        string `json:"load_balancer_name"` // 负载均衡实例的名称，只在创建一个实例的时候才会生效。规则：1-60 个英文、汉字、数字、连接线“-”或下划线“_”
	VpcId                   string `json:"vpc_id"`
	SubnetId                string `json:"subnet_id"`
	InternetMaxBandwidthOut int64  `json:"internet_max_bandwidth_out"` // 带宽大小
	ZoneId                  string `json:"zone_id"`                    // 区域ID
}

type CLBResponse struct {
	LoadBalancerId           string `json:"LoadBalancerId,omitnil" name:"LoadBalancerId"`                     // 负载均衡实例 ID。
	LoadBalancerName         string `json:"LoadBalancerName,omitnil" name:"LoadBalancerName"`                 // 负载均衡实例的名称。
	LoadBalancerType         string `json:"LoadBalancerType,omitnil" name:"LoadBalancerType"`                 // 负载均衡实例的网络类型： OPEN：公网属性， INTERNAL：内网属性。
	Forward                  uint64 `json:"Forward,omitnil" name:"Forward"`                                   // 负载均衡类型标识，1：负载均衡，0：传统型负载均衡。
	Status                   uint64 `json:"Status,omitnil" name:"Status"`                                     // 负载均衡实例的状态，包括 0：创建中，1：正常运行。
	CreateTime               string `json:"CreateTime,omitnil" name:"CreateTime"`                             // 负载均衡实例的创建时间。
	StatusTime               string `json:"StatusTime,omitnil" name:"StatusTime"`                             // 负载均衡实例的上次状态转换时间。
	VpcId                    string `json:"VpcId,omitnil" name:"VpcId"`                                       // 私有网络的 ID
	SubnetId                 string `json:"SubnetId,omitnil" name:"SubnetId"`                                 // 负载均衡实例所在的子网（仅对内网VPC型LB有意义）
	AddressIPVersion         string `json:"AddressIPVersion,omitnil" name:"AddressIPVersion"`                 // IP版本，ipv4 | ipv6
	IsolatedTime             string `json:"IsolatedTime,omitnil" name:"IsolatedTime"`                         // 负载均衡实例被隔离的时间
	ExpireTime               string `json:"ExpireTime,omitnil" name:"ExpireTime"`                             // 负载均衡实例的过期时间，仅对预付费负载均衡生效
	ChargeType               string `json:"ChargeType,omitnil" name:"ChargeType"`                             // 负载均衡实例的计费类型，PREPAID：包年包月，POSTPAID_BY_HOUR：按量计费
	LoadBalancerPassToTarget bool   `json:"LoadBalancerPassToTarget,omitnil" name:"LoadBalancerPassToTarget"` // 后端服务是否放通来自LB的流量
	SlaType                  string `json:"SlaType,omitnil" name:"SlaType"`                                   // 性能容量型规格
	IsBlock                  bool   `json:"IsBlock,omitnil" name:"IsBlock"`                                   // vip是否被封堵
	IsBlockTime              string `json:"IsBlockTime,omitnil" name:"IsBlockTime"`                           // 封堵或解封时间
}

type DNSRecordRequest struct {
	Domain     string `json:"domain"`     // 域名
	RecordType string `json:"recordType"` // 记录类型，A, MX , CNAME，NS, TXT, AAAA, CAA, SRV 等
	Value      string `json:"value"`      // 记录值，如 IP : 200.200.200.200， CNAME : cname.dnspod.com.， MX : mail.dnspod.com.
	TTL        uint64 `json:"TTL"`
	MX         uint64 `json:"MX"`     // MX 优先级，当记录类型是 MX 时有效，范围1-20，MX 记录时必选。
	Remark     string `json:"remark"` // 说明
}

type DNSRecordItem struct {
	RecordId      uint64 `json:"RecordId,omitnil" name:"RecordId"`           // 记录Id
	Value         string `json:"Value,omitnil" name:"Value"`                 // 记录值
	Status        string `json:"Status,omitnil" name:"Status"`               // 记录状态，启用：ENABLE，暂停：DISABLE ; 0表示禁用，1表示启用。
	UpdatedOn     string `json:"UpdatedOn,omitnil" name:"UpdatedOn"`         // 更新时间
	Name          string `json:"Name,omitnil" name:"Name"`                   // 主机名
	Line          string `json:"Line,omitnil" name:"Line"`                   // 记录线路
	LineId        string `json:"LineId,omitnil" name:"LineId"`               // 线路Id
	Type          string `json:"Type,omitnil" name:"Type"`                   // 记录类型
	Weight        uint64 `json:"Weight,omitnil" name:"Weight"`               // 记录权重，用于负载均衡记录
	MonitorStatus string `json:"MonitorStatus,omitnil" name:"MonitorStatus"` // 记录监控状态，正常：OK，告警：WARN，宕机：DOWN，未设置监控或监控暂停则为空
	Remark        string `json:"Remark,omitnil" name:"Remark"`               // 记录备注说明
	TTL           uint64 `json:"TTL,omitnil" name:"TTL"`                     // 记录缓存时间
	MX            uint64 `json:"MX,omitnil" name:"MX"`                       // MX值，只有MX记录有
	DefaultNS     bool   `json:"DefaultNS,omitnil" name:"DefaultNS"`         // 是否是默认的ns记录
}

type DNSDomainItem struct {
	DomainId         uint64 `json:"DomainId,omitnil" name:"DomainId"`                 // 系统分配给域名的唯一标识
	Name             string `json:"Name,omitnil" name:"Name"`                         // 域名的原始格式
	Status           string `json:"Status,omitnil" name:"Status"`                     // 域名的状态，正常：ENABLE，暂停：PAUSE，封禁：SPAM
	TTL              uint64 `json:"TTL,omitnil" name:"TTL"`                           // 域名默认的解析记录默认TTL值
	CNAMESpeedup     string `json:"CNAMESpeedup,omitnil" name:"CNAMESpeedup"`         // 是否开启CNAME加速，开启：ENABLE，未开启：DISABLE
	DNSStatus        string `json:"DNSStatus,omitnil" name:"DNSStatus"`               // DNS 设置状态，错误：DNSERROR，正常：空字符串
	Grade            string `json:"Grade,omitnil" name:"Grade"`                       // 域名的套餐等级代码
	GroupId          uint64 `json:"GroupId,omitnil" name:"GroupId"`                   // 域名所属的分组Id
	SearchEnginePush string `json:"SearchEnginePush,omitnil" name:"SearchEnginePush"` // 是否开启搜索引擎推送优化，是：YES，否：NO
	Remark           string `json:"Remark,omitnil" name:"Remark"`                     // 域名备注说明
	RecordCount      uint64 `json:"RecordCount,omitnil" name:"RecordCount"`           // 域名下的记录数量
	CreatedOn        string `json:"CreatedOn,omitnil" name:"CreatedOn"`               // 域名添加时间
	UpdatedOn        string `json:"UpdatedOn,omitnil" name:"UpdatedOn"`               // 域名更新时间
	Owner            string `json:"Owner,omitnil" name:"Owner"`                       // 域名所属账号
}
